package alecava;

import java.io.File;
import java.util.Vector;

/**
 *
 * @author Alecava
 *
 */

public class Ricerca {
    
    /**
     * cerca i file nella directory data e nelle sue sottodirectory
     * che corrispondono al filtro e all'estensione,se sono lasciati vuoti
     * tutte le corrispondenze sono valide
     * @param dir
     *            File
     * @param filtro
     *            String
     * @param ext
     *            String
     */
    
    private static void cerca(Vector<File> v, File dir, String filtro, String ext) {
        // prende la lista di files e directory a partire da dir
        File[] files = dir.listFiles();
        // /////////////////////////////////////
        for (File f : files) {
            // se � un file aggiunge a v
            if (f.isFile()) {
                //controlla la corrispondenza del filtro e
                //dell' estensione
                if (f.getName().toString().toLowerCase().indexOf(filtro.toLowerCase()) != -1 &&
                        f.getName().toLowerCase().endsWith(ext.toLowerCase())) {
                    v.addElement(f);
                }
            } else {
                // sen� richiama la funzione ricorsivamente
                cerca(v, f, filtro, ext);
            }
        }
    }
    
    /**
     *
     * @param dir
     *            File
     * @param filtro
     *            String
     * @return Vector<File>
     * @see #cerca(File, String, String)
     *
     */
    
    public static Vector<File> ricerca(File dir, String filtro, String ext) {
        Vector<File> v = new Vector<File>();
        cerca(v, dir, filtro, ext);
        return v;
    }
}
